//
//  WHVerifyCodeButton.m
//  WasteHouse
//
//  Created by snowlu on 2018/4/22.
//  Copyright © 2018年 LittleShrimp. All rights reserved.
//

#import "WHVerifyCodeButton.h"
#define BackgroundColor UIColorFromHex(0xFEECED)

@interface WHVerifyCodeButton()
{
    BOOL timeStart;
}

@end

@implementation WHVerifyCodeButton
-(instancetype)init{
    if (self = [super init]) {
     
        timeStart  = NO;
        
    }
    return self;
}
- (void)stopTimer
{
    timeStart = NO;
    dispatch_async(dispatch_get_main_queue(), ^{
        [self setTitle:@"发送验证码" forState:UIControlStateNormal];
        self.userInteractionEnabled = YES;
    });
}
- (void)resetTimer{
    timeStart = NO;
    dispatch_async(dispatch_get_main_queue(), ^{
        [self setTitle:@"发送验证码" forState:UIControlStateNormal];
        self.userInteractionEnabled = YES;
        [self setTitleColor:UIColorFromHex(0xF1404b) forState:UIControlStateNormal];
    });
    
}

-(void)startTimeOut
{
    timeStart = YES;
    __block int timeout = 60; //倒计时时间
    self.backgroundColor = [UIColor lightGrayColor];
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);
    dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行
    dispatch_source_set_event_handler(_timer, ^{
        if(timeout<=0){ //倒计时结束，关闭
            dispatch_source_cancel(_timer);
            dispatch_async(dispatch_get_main_queue(), ^{
                [self setBackgroundColor:BackgroundColor];
                
                NSString *string = @"重新发送";
                NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:string];
                [attr addAttribute:NSForegroundColorAttributeName value: UIColorFromHex(0xF1404b) range:NSMakeRange(0, string.length)];
                [self setAttributedTitle:attr forState:UIControlStateNormal];
                self.userInteractionEnabled = YES;
            });
        }else if(timeStart){
            int seconds = timeout % 60;
            NSString *strTime = [NSString stringWithFormat:@"%.2d", seconds];
            dispatch_async(dispatch_get_main_queue(), ^{
                NSString *string = [NSString stringWithFormat:@"%@秒 后重新获取",strTime];
                NSArray *arr = [string componentsSeparatedByString:@"秒"];
                NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:string];
                [attr addAttribute:NSForegroundColorAttributeName value:UIColorFromHex(0xF1404b)  range:NSMakeRange(0, [arr[0] length])];
                [attr addAttribute:NSForegroundColorAttributeName value:UIColorFromHex(0xF1404b) range:NSMakeRange(string.length - 4, 4)];
                [self setAttributedTitle:attr forState:UIControlStateNormal];
                self.userInteractionEnabled = NO;
                [self setBackgroundColor:BackgroundColor];
                
            });
            timeout--;
            
        }
        else
        {
            dispatch_source_cancel(_timer);
        }
    });
    dispatch_resume(_timer);
}
@end
